package com.thp.proxy.jdk;

import com.thp.proxy.model.Person;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * 魔力  能够 使用魔法让你吃得更好
 */
public class Witchcraft implements InvocationHandler {


    private Person target;

    public Object getInstance(Person target) throws Exception {
        this.target = target;
        Class clazz = target.getClass();
        // return Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), this);
        return Proxy.newProxyInstance(clazz.getClassLoader() , clazz.getInterfaces(), this);
    }

    // 增强的方法
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("你获得魔法,你可以吃得更好,去他娘的二两米饭:");

        if(method.getName().equals("haveLauch")) {
            method.invoke(this.target, args);
            System.out.println("午餐就给你加个鲍鱼,燕窝");
        } else if(method.getName().equals("haveDinner")) {
            method.invoke(this.target, args);
            System.out.println("晚餐就给你加个牛鞭");
        }

        return null;
    }
}
